/**
 * 定义一个切点接口，用于指定切面织入的范围和时机
 * 切点是AOP中的基本元素，它定义了增强（Advice）应用的范围，即在哪些类的哪些方法上应用增强
 */
package com.test.aop;

/**
 * Pointcut接口定义了切点的两个主要方面：
 * 1. 类过滤器（ClassFilter），用于确定哪些类需要织入增强
 * 2. 方法匹配器（MethodMatcher），用于确定在类中哪些方法需要织入增强
 */

public interface Pointcut {

    /**
     * 获取类过滤器，用于确定哪些类需要织入增强
     *
     * @return ClassFilter 实例，用于过滤符合条件的类
     */
    ClassFilter getClassFilter();

    /**
     * 获取方法匹配器，用于确定在类中哪些方法需要织入增强
     *
     * @return MethodMatcher 实例，用于匹配符合条件的方法
     */
    MethodMatcher getMethodMatcher();

    /**
     * 定义一个名为TRUE的特殊切点，这是一个预定义的切点，匹配所有可能的切点
     * 它是一个静态常量，通过TruePointcut类的INSTANCE静态实例进行初始化
     */
    Pointcut TRUE = TruePointcut.INSTANCE;
}
